package com.zyf.project.binaryproto.specification;

import com.zyf.project.binaryproto.type.PrimitiveType;

/**
 * <h1>枚举类的数据契约格式标准</h1>
 *
 * @author Zhou Yifan
 */
public interface EnumSpecification {

    /**
     * 数据契约的类型编码
     *
     * @return int 值
     */
    int getCode();

    /**
     * 名字
     *
     * @return 字符串
     */
    String getName();

    /**
     * 描述
     *
     * @return 字符串
     */
    String getDescription();

    /**
     * <p>数据契约的版本</p>
     *
     * @return long 值
     */
    long getVersion();

    /**
     * 获取枚举类数据契约类型
     *
     * @return {@link PrimitiveType}
     */
    PrimitiveType getValueType();

    /**
     * 获取枚举类各项的值
     *
     * @return int[]
     */
    int[] getItemValues();

    /**
     * 获取枚举类各项的名字
     *
     * @return String[]
     */
    String[] getItemNames();

}
